package com.bytech.common.biz.entity.base;

import lombok.Getter;

import java.util.HashMap;
import java.util.Map;

/**
 * @author zhaolt
 * @date 2021/7/28 22:52
 */
@Getter
public enum BlogResultStatus {

    SUCCESS(0, "OK"),
    SERVER_ERROR(500, "(‧_‧?)服务器发生了未知错误！愿世间没有BUG..."),
    NO_LOGIN(402, "请先登录"),
    LOGIN_ERROR(403, "用户名或密码错误"),
    NOT_FOUND_ERROR(404, "页面不存在"),
    NO_PERMISSION(499, "权限不足！请登录管理员账号。"),
    LOGIN_EXPIRED_ERROR(410, "登录已过期"),
    USER_NO_EXIST_ERROR(902, "用户不存在"),
    REMOTE_SERVICE_BAD_GATEWAY(1502, "(‧_‧?)服务器处理请求过多~ 歇一会儿吧。。。"),
    REMOTE_SERVICE_UNAVAILABLE(1503, "(‧_‧?) 远程服务歇逼了。。。"),
    REMOTE_SERVICE_GATEWAY_TIMEOUT(1504, "(‧_‧?)网关超时！"),
    IDEMPOTENT_ERROR(1601, "请不要重复提交表单"),
    IDEMPOTENT_NO_EXIST_ERROR(1602, "表单未授权，请刷新页面"),
    ;

    public Integer code;
    public String message;

    BlogResultStatus(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    static Map<Integer, BlogResultStatus> resultStatusMap = new HashMap<>(BlogResultStatus.values().length);

    static {
        for (BlogResultStatus r : BlogResultStatus.values()) {
            resultStatusMap.put(r.getCode(), r);
        }
    }

    public static BlogResultStatus ofCode(Integer code) {
        if (code == null) {
            return SERVER_ERROR;
        }
        BlogResultStatus status = resultStatusMap.get(code);
        return status == null ? SERVER_ERROR : status;
    }
}
